/**
 * 排课密码验证对话框
 * 用于正式排课和取消排课的密码验证
 */

// 使用立即执行函数包装，等待jQuery加载
(function() {
    'use strict';

    // 等待jQuery加载的函数
    function waitForJQuery(callback) {
        if (typeof window.jQuery !== 'undefined') {
            callback(window.jQuery);
        } else {
            setTimeout(function() {
                waitForJQuery(callback);
            }, 50);
        }
    }

    // 初始化密码对话框功能
    waitForJQuery(function($) {

// 显示排课密码验证对话框
window.showSchedulePasswordDialog = function(callback) {

    // 如果模态框不存在，创建它
    if (!$('#schedulePasswordModal').length) {
        var modalHtml = `
            <div class="modal fade" id="schedulePasswordModal" tabindex="-1" role="dialog" aria-labelledby="schedulePasswordModalLabel">
                <div class="modal-dialog" role="document">
                    <div class="modal-content">
                        <div class="modal-header">
                            <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                                <span aria-hidden="true">&times;</span>
                            </button>
                            <h4 class="modal-title" id="schedulePasswordModalLabel">
                                <i class="fa fa-lock"></i> 密码验证
                            </h4>
                        </div>
                        <div class="modal-body">
                            <div class="form-group">
                                <label for="schedulePassword">请输入排课密码：</label>
                                <input type="password" class="form-control" id="schedulePassword" placeholder="请输入密码">
                                <small class="text-muted">此操作需要管理员密码验证</small>
                            </div>
                            <div class="alert alert-danger" id="passwordError" style="display: none;"></div>
                        </div>
                        <div class="modal-footer">
                            <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
                            <button type="button" class="btn btn-primary" id="confirmPasswordBtn">确认</button>
                        </div>
                    </div>
                </div>
            </div>
        `;
        $('body').append(modalHtml);
    }
    
    // 清空之前的输入和错误信息
    $('#schedulePassword').val('');
    $('#passwordError').hide();
    
    // 显示模态框
    $('#schedulePasswordModal').modal('show');
    
    // 聚焦到密码输入框
    $('#schedulePasswordModal').on('shown.bs.modal', function () {
        $('#schedulePassword').focus();
    });
    
    // 绑定确认按钮事件
    $('#confirmPasswordBtn').off('click').on('click', function() {
        var password = $('#schedulePassword').val();
        if (!password) {
            $('#passwordError').text('请输入密码').show();
            return;
        }
        
        // 调用回调函数
        if (typeof callback === 'function') {
            callback(password);
        }
    });
    
    // 绑定回车键事件
    $('#schedulePassword').off('keypress').on('keypress', function(e) {
        if (e.which === 13) { // 回车键
            $('#confirmPasswordBtn').click();
        }
    });
}

// 显示取消排课密码验证对话框
window.showCancelPasswordDialog = function(callback) {

    // 如果模态框不存在，创建它
    if (!$('#cancelPasswordModal').length) {
        var modalHtml = `
            <div class="modal fade" id="cancelPasswordModal" tabindex="-1" role="dialog" aria-labelledby="cancelPasswordModalLabel">
                <div class="modal-dialog" role="document">
                    <div class="modal-content">
                        <div class="modal-header">
                            <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                                <span aria-hidden="true">&times;</span>
                            </button>
                            <h4 class="modal-title" id="cancelPasswordModalLabel">
                                <i class="fa fa-lock"></i> 取消排课密码验证
                            </h4>
                        </div>
                        <div class="modal-body">
                            <div class="form-group">
                                <label for="cancelPassword">请输入取消排课密码：</label>
                                <input type="password" class="form-control" id="cancelPassword" placeholder="请输入密码">
                                <small class="text-muted">此操作需要管理员密码验证</small>
                            </div>
                            <div class="alert alert-danger" id="cancelPasswordError" style="display: none;"></div>
                        </div>
                        <div class="modal-footer">
                            <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
                            <button type="button" class="btn btn-primary" id="confirmCancelPasswordBtn">确认</button>
                        </div>
                    </div>
                </div>
            </div>
        `;
        $('body').append(modalHtml);
    }
    
    // 清空之前的输入和错误信息
    $('#cancelPassword').val('');
    $('#cancelPasswordError').hide();
    
    // 显示模态框
    $('#cancelPasswordModal').modal('show');
    
    // 聚焦到密码输入框
    $('#cancelPasswordModal').on('shown.bs.modal', function () {
        $('#cancelPassword').focus();
    });
    
    // 绑定确认按钮事件
    $('#confirmCancelPasswordBtn').off('click').on('click', function() {
        var password = $('#cancelPassword').val();
        if (!password) {
            $('#cancelPasswordError').text('请输入密码').show();
            return;
        }
        
        // 调用回调函数
        if (typeof callback === 'function') {
            callback(password);
        }
    });
    
    // 绑定回车键事件
    $('#cancelPassword').off('keypress').on('keypress', function(e) {
        if (e.which === 13) { // 回车键
            $('#confirmCancelPasswordBtn').click();
        }
    });
}

// 显示密码错误信息
window.showPasswordError = function(modalId, message) {

    var errorId = modalId === 'schedulePasswordModal' ? '#passwordError' : '#cancelPasswordError';
    $(errorId).text(message || '密码错误，请重新输入').show();

    // 清空密码输入框
    var inputId = modalId === 'schedulePasswordModal' ? '#schedulePassword' : '#cancelPassword';
    $(inputId).val('').focus();
}

// 隐藏密码对话框
window.hidePasswordDialog = function(modalId) {

    $('#' + modalId).modal('hide');
}

// 通用的密码验证函数
window.validateSchedulePassword = function(password, successCallback, errorCallback) {
    // 这里可以添加密码验证逻辑
    // 目前直接调用成功回调，实际项目中应该向服务器验证密码
    if (typeof successCallback === 'function') {
        successCallback();
    }
};

    }); // waitForJQuery 结束

})(); // 立即执行函数结束
